In some types of image transmission applications, such as videoconferencing applications, a video camera captures a series of video frames of a target. The series of video frames is typically encoded as a data stream at one location and sent over a communications channel to another location. For example, the data stream may be transmitted over a phone line, an integrated services digital network (ISDN) line, or the Internet. In certain other image transmission applications, the encoded data stream is sent from one component, such as a CD-ROM drive, of a system to another component, for example, a central processing unit (CPU), of the same system.
An encoder at the sending location typically divides the frames into a number of data packets, such as macroblocks or groups of blocks (GOBs). Certain patterns are typically repeated in the data stream, resulting in various conditions collectively known as redundancy. For example, spatial redundancy occurs when a pattern appears at several locations in a data packet. Another type of redundancy, known as temporal redundancy, occurs when a pattern appears in a group of related frames. Some patterns exhibit both spatial and temporal redundancy.
The encoder typically compresses the data packets according to a video compression standard, such as the ITU-T H.261 or H.263 standard, by reducing redundancy within the data. For example, some compression techniques, known collectively as interframe compression, reduce spatial and temporal redundancy across a series of related frames and encodes series of frames as data packets known as interframes. Interframe compression encodes data packets of this type as a function of a previous frame and on difference information representing a difference between the previous frame and the frame to be transmitted.
Other compression techniques, known collectively as intraframe compression, compress data by reducing spatial redundancy within a single frame and encodes frames as data packets known as intraframes. Data packets of this type, therefore, can be decoded into frames without reference to previous frames. GOBs may be compressed using similar techniques and encoded as data packets known as inter-GOBs or intra-GOBs.
A decoder at a remote location typically decodes a data stream into a series of frames and causes the frames to be displayed on a display device, such as a computer monitor or television screen. Ideally, the frames received and displayed at the remote location are identical to the frames transmitted from the local location.
The communications channel, however, is often susceptible to various flaws that introduce errors into the data stream, such as bit errors, burst errors, and lost packets. Furthermore, equipment failures and software bugs may also corrupt the data stream. Such errors often cause visible anomalies, known as artifacts, to appear in the received frames. When anomalies appear, the received frames differ from the transmitted frames. When the data stream is corrupted, the decoder typically resynchronizes with the incoming data stream in order to receive subsequent frames properly.
One type of resynchronization technique involves finding a predefined start code that indicates the beginning of a frame or GOB or the end of a sequence of frames. The start code is typically a unique bit pattern, such as a pattern that has no other meaning in a legal data stream. After resynchronization, the decoder requests an intraframe or intra-GOB from the encoder. Due to the difficulty of detecting an error before it manifests as an illegal codeword or value, the request typically issues some time after the data stream error has occurred. Visible artifacts are usually already present in the decoded image at this point.